In [6]:
import pandas as pd
from ploev.calc import Calc
from ploev.ppt import OddsOracle
from ploev.cards import Board
from ploev.easy_range import BoardExplorer
In [7]:
odds_oracle = OddsOracle()
calc = Calc(odds_oracle)
Мы хотим посмотреть, как часто (и как сильно) префлоп диапазоны попадают в определенные флопы. Для этого нам нужно задать:
In [21]:
# Префлоп диапазоны (используем сохранненные диапазоны PokerJuice)
main_ranges = ['$FI12', '$FI20', '$FI25', '$FI30', '$FI40', '$FI50',
'$3b4i', '$3b6i', '$3b8i', '$3b10i', '$3b12i', '$3b15i',
'$3b4o', '$3b6o', '$3b8o', '$3b10o', '$3b12o', '$3b15o',]
# Поддиапазоны попадания во флоп в формате easy_range
sub_easy_ranges = [
'MS+, SD16_16+, (T2P+):(SD8_8+), (TP,MP,BP,OP3+):SD12_12+',
'T2P+, SD12_12+, (2P+):(SD8+), (TP,MP,BP,OP3+):SD12+',
'TP,OP2+, SD8_8+',
'*',
]
# Флоп
flop = '9d8s2h'
# Переводим поддиапазоны в формат PPT с помощью easy_range.BoardExplorer
board_explorer = BoardExplorer(Board.from_str(flop))
sub_ranges = [board_explorer.ppt(sub_easy_range) for sub_easy_range in sub_easy_ranges]
In [22]:
matching = [] # В этом list'e будут храниться проценты попадания каждого диапазона
In [23]:
def get_matching(board, main_range, sub_ranges):
return calc.range_distribution(main_range, sub_ranges, board, equity=False)
In [24]:
for main_range in main_ranges:
calc_results = get_matching(flop, main_range, sub_ranges)
fractions = [round(calc_result.fraction * 100) for calc_result in calc_results]
matching.append(fractions)
In [25]:
columns = ['Strong', 'Good', 'Medium', 'Weak']
df = pd.DataFrame.from_records(matching, columns=columns, index=main_ranges)
In [26]:
df
Out[26]:
In [27]:
import matplotlib.pyplot as plt
%matplotlib inline
In [28]:
df.plot(kind='bar',stacked='True', figsize=(10, 4))
Out[28]:
In [29]:
df.plot(kind='bar', figsize=(15, 4))
Out[29]:
In [30]:
df[:6].plot(figsize=(10, 4)) # Только для $FI
Out[30]:
In [31]:
df[6:12].plot(figsize=(10, 4)) # Только для $3bi
Out[31]:
In [32]:
df.to_excel("matching.xls")
In [ ]: